Persistent network resource and virtual area associations for realtime collaboration

ABSTRACT

Apparatus and methods relating to persistent network resource and virtual area associations for realtime collaboration include managing and displaying an object associated with a virtual area that supports establishment of respective presences of communicants operating respective client network nodes. Examples of the object include an object that has one or more user-modifiable property fields and an object that is associated with screen sharing functionality of the client network node.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application relates to the following co-pending patentapplications, the entirety of each of which is incorporated herein byreference: U.S. patent application Ser. No. 12/630,973, filed Dec. 4,2009; U.S. patent application Ser. No. 12/418,243, filed Apr. 3, 2009;U.S. patent application Ser. No. 12/631,008, filed Dec. 4, 2009; U.S.patent application Ser. No. 12/631,026, filed Dec. 4, 2009; U.S. patentapplication Ser. No. 12/418,270, filed Apr. 3, 2009; U.S. patentapplication Ser. No. 12/825,512, filed Jun. 29, 2010; U.S. patentapplication Ser. No. 12/354,709, filed Jan. 15, 2009; U.S. patentapplication Ser. No. 12/509,658, filed Jul. 27, 2010; U.S. patentapplication Ser. No. 12/694,126, filed Jan. 26, 2010; U.S. Provisionalpatent application Ser. No. 61/373,914, filed Aug. 16, 2010; and U.S.Provisional patent application Ser. No. 61/381,956, filed Sep. 11, 2010.

BACKGROUND

When face-to-face communications are not practical, people often rely onone or more technological solutions to meet their communications needs.Traditional telephony systems enable voice communications betweencallers. Instant messaging (also referred to as “chat”) communicationssystems enable users to communicate text messages in real time throughinstant message computer clients that are interconnected by an instantmessage server. Some instant messaging systems and interactive virtualreality communications systems allow users to be represented byuser-controllable graphical objects (referred to as “avatars”). What areneeded are improved systems and methods for realtime networkcommunications.

DESCRIPTION OF DRAWINGS

FIG. 1 is a diagrammatic view of an example of a network communicationsenvironment that includes first and second client network nodes and avirtual environment creator that includes at least one server networknode.

FIGS. 2-22 are respective diagrammatic views of graphical user interfaceexamples.

FIG. 23 is a flow diagram of an example of a network resource sharingmethod,

FIG. 24 is a flow diagram of an example of a network resource sharingmethod.

FIG. 25 is a diagrammatic view of an example of a graphical userinterface.

FIG. 26 is a diagrammatic view of an example of a network communicationsenvironment that includes first and second client network nodes and avirtual environment creator that includes at least one server networknode.

FIG. 27 is a flow diagram of an example of information flows between theclient network node and components of the virtual environment creatorshown in FIG. 26.

DETAILED DESCRIPTION

In the following description, like reference numbers are used toidentify like elements. Furthermore, the drawings are intended toillustrate major features of exemplary embodiments in a diagrammaticmanner. The drawings are not intended to depict every feature of actualembodiments nor relative dimensions of the depicted elements, and arenot drawn to scale.

I. DEFINITION OF TERMS

A “communicant” is a person who communicates or otherwise interacts withother persons over one or more network connections, where thecommunication or interaction may or may not occur in the context of avirtual area. A “user” is a communicant who is operating a particularnetwork node that defines a particular perspective for descriptivepurposes.

A “computer” is any machine, device, or apparatus that processes dataaccording to computer-readable instructions that are stored on acomputer-readable medium either temporarily or permanently. A “computeroperating system” is a software component of a computer system thatmanages and coordinates the performance of tasks and the sharing ofcomputing and hardware resources. A “software application” (alsoreferred to as software, an application, computer software, a computerapplication, a program, and a computer program) is a set of instructionsthat a computer can interpret and execute to perform one or morespecific tasks. A “data file” is a block of information that durablystores data for use by a software application.

The term “computer-readable medium” refers to any tangible,non-transitory medium capable storing information (e.g., instructionsand data) that is readable by a machine (e.g., a computer). Storagedevices suitable for tangibly embodying such information include, butare not limited to, all forms of physical, non-transitorycomputer-readable memory, including, for example, semiconductor memorydevices, such as random access memory (RAM), EPROM, EEPROM, and Flashmemory devices, magnetic disks such as internal hard disks and removablehard disks, magneto-optical disks, DVD-ROM/RAM, and CD-ROM/RAM.

A “window” is a visual area of a display that typically includes a userinterface. A window typically displays the output of a software processand typically enables a user to input commands or data for the softwareprocess. A window that has a parent is called a “child window.” A windowthat has no parent, or whose parent is the desktop window, is called a“top-level window.” A “desktop” is a system-defined window that paintsthe background of a graphical user interface (GUI) and serves as thebase for all windows displayed by all software processes.

A “data sink” (referred to herein simply as a “sink”) is any of a device(e.g., a computer), part of a device, or software that receives data.

A “data source” (referred to herein simply as a “source”) is any of adevice (e.g., a computer), part of a device, or software that originatesdata.

A “network node” (also referred to simply as a “node”) is a junction orconnection point in a communications network. Examples of network nodesinclude, but are not limited to, a terminal, a computer, and a networkswitch. A “server” network node is a host computer on a network thatresponds to requests for information or service. A “client network node”is a computer on a network that requests information or service from aserver.

A Uniform Resource Identifier (URI) is a string of characters thatidentifies a network resource.

A “network resource” is anything that can be identified by a uniformresource identifier (URI) and accessed over a network, including anelectronic document, an image, a source of information, a service,operators and operands of a mathematical equation, classes, properties,numeric values, and a collection of other resources.

A “network connection” is a link between two communicating networknodes. A “connection handle” is a pointer or identifier (e.g., a uniformresource identifier (URI)) that can be used to establish a networkconnection with a network resource. A “network communication” caninclude any type of information (e.g., text, voice, audio, video,electronic mail message, data file, motion data stream, and data packet)that is transmitted or otherwise conveyed from one network node toanother network node over a network connection.

A “communicant interaction” is any type of direct or indirect action orinfluence between a communicant and another network entity, which mayinclude for example another communicant, a virtual area, or a networkservice. Examples of types of communicant communications includecommunicants communicating with each other in realtime, a communicantentering a virtual area, and a communicant requesting access to aresource from a network service.

“Presence” refers to the ability and willingness of a networked entity(e.g., a communicant, service, or device) to communicate, where suchwillingness affects the ability to detect and obtain information aboutthe state of the entity on a network and the ability to connect to theentity.

A “realtime data stream” is data that is structured and processed in acontinuous flow and is designed to be received with no delay or onlyimperceptible delay. Realtime data streams include digitalrepresentations of voice, video, user movements, facial expressions andother physical phenomena, as well as data within the computingenvironment that may benefit from rapid transmission, rapid execution,or both rapid transmission and rapid execution, including for example,avatar movement instructions, text chat, realtime data feeds (e.g.,sensor data, machine control instructions, transaction streams and stockquote information feeds), screen shares, and file transfers.

A “virtual area” (also referred to as an “area” or a “place”) is arepresentation of a computer-managed space or scene. Virtual areastypically are one-dimensional, two-dimensional, or three-dimensionalrepresentations; although in some examples a virtual area may correspondto a single point. Oftentimes, a virtual area is designed to simulate aphysical, real-world space. For example, using a traditional computermonitor, a virtual area may be visualized as a two-dimensional graphicof a three-dimensional computer-generated space. However, virtual areasdo not require an associated visualization. A virtual area typicallyrefers to an instance of a virtual area schema, where the schema definesthe structure and contents of a virtual area in terms of variables andthe instance defines the structure and contents of a virtual area interms of values that have been resolved from a particular context.

A “virtual area application” (also referred to as a “virtual areaspecification”) is a description of a virtual area that is used increating a virtual environment. The virtual area application typicallyincludes definitions of geometry, physics, and realtime switching rulesthat are associated with one or more zones of the virtual area.

A “virtual environment” is a representation of a computer-managed spacethat includes at least one virtual area and supports realtimecommunications between communicants.

A “zone” is a region of a virtual area that is associated with at leastone switching rule or governance rule. A “switching rule” is aninstruction that specifies a connection or disconnection of one or morerealtime data sources and one or more realtime data sinks subject to oneor more conditions precedent. A switching rule controls switching (e.g.,routing, connecting, and disconnecting) of realtime data streams betweennetwork nodes communicating in the context of a virtual area. Agovernance rule controls a communicant's access to a resource (e.g., anarea, a region of an area, or the contents of that area or region), thescope of that access, and follow-on consequences of that access (e.g., arequirement that audit records relating to that access must berecorded). A “renderable zone” is a zone that is associated with arespective visualization.

A “position” in a virtual area refers to a location of a point or anarea or a volume in the virtual area. A point typically is representedby a single set of one-dimensional, two-dimensional, orthree-dimensional coordinates (e.g., x, y, z) that define a spot in thevirtual area. An area typically is represented by the three-dimensionalcoordinates of three or more coplanar vertices that define a boundary ofa closed two-dimensional shape in the virtual area. A volume typicallyis represented by the three-dimensional coordinates of four or morenon-coplanar vertices that define a closed boundary of athree-dimensional shape in the virtual area.

As used herein, the term “includes” means includes but not limited to,the term “including” means including but not limited to. The term “basedon” means based at least in part on.

II. PERSISTENT NETWORK RESOURCE AND VIRTUAL AREA ASSOCIATIONS FORREALTIME COLLABORATION

FIG. 1 shows an embodiment of an exemplary network communicationsenvironment 10 that includes a first client network node 12 (Client NodeA), a second client network node 14 (Client Network Node B), and avirtual environment creator 18 that are interconnected by a network 20.The network 20 may include one or more of any of a local area network(LAN), a metropolitan area network (MAN), and a wide area network (WAN)(e.g., the internet). The network 20 typically includes a number ofdifferent computing platforms and transport facilities that support thetransmission of a wide variety of different media types (e.g., text,voice, audio, video, and other data) between network nodes.

The first client network node 12 includes a computer-readable medium 22(or “memory”), a processor 24, and input/output (I/O) hardware 26(including a display). The processor 24 executes at least onecommunications application 28 that is stored in the memory 22. Thesecond client network node 14 typically is configured in substantiallythe same general way as the first client network node 12, with acomputer-readable medium 30 storing at least one communicationsapplication 32, a processor 34, and input/output (I/O) hardware 36(including a display).

Each of the network nodes 12, 14 has a respective set of one or moresources and an exemplary set of one or more sinks. Exemplary sourcesinclude an audio source (e.g., an audio capture device, such as amicrophone), a video source (e.g., a video capture device, such as avideo camera), a chat source (e.g., a text capture device, such as akeyboard), a motion data source (e.g., a pointing device, such as acomputer mouse), and other sources (e.g., file sharing source or asource of a customized real-time data stream). Exemplary sinks includean audio sink (e.g., an audio rendering device, such as a speaker orheadphones), a video sink (e.g., a video rendering device, such as adisplay monitor), a chat sink (e.g., a text rendering device, such as adisplay monitor), a motion data sink (e.g., a movement rendering device,such as a display monitor), and other sinks (e.g., a printer forprinting shared files, a device for rendering real-time data streamsdifferent from those already described, or software that processesreal-time streams for analysis or customized display).

The virtual area platform 18 includes at least one server network node40 that provides a network infrastructure service environment 42 thatmanages sessions of the first and second client nodes 12, 14 in one ormore virtual areas 44 in accordance with respective virtual areaapplications 46. One or more of the virtual area applications 44typically are synchronous conferencing applications that support one ormore types of communications between the client nodes 12, 14 (e.g., textchat, audio conferencing, video conferencing, application sharing, andfile sharing). The network infrastructure service environment 42typically includes one or more network infrastructure services thatcooperate with the communications applications 28, 32 in the process ofestablishing and administering network connections between the clientnodes 12, 14 and other network nodes. Among the network infrastructureservices that are included in the example of the network infrastructureservice environment 42 are an account service, a security service, anarea service, a rendezvous service, an interaction service, and acapabilities engine. The area service administers a virtual area 44 bymanaging sessions of the first and second client nodes 12, 14 in thevirtual area 44 in accordance with the virtual area application 46.Examples of the virtual area platform 18 and the virtual areaapplications 46 are described in U.S. Provisional patent applicationSer. No. 61/563,088, filed Nov. 23, 2011. Examples of an accountservice, a security service, an area service, a rendezvous service, andan interaction service are described in U.S. patent application Ser. No.12/630,973, filed Dec. 4, 2009. Examples of a capabilities engine aredescribed in U.S. Provisional patent application Ser. No. 61/535,910,filed Sep. 16, 2011.

The network infrastructure service environment 42 maintains arelationship database 47 that contains the records 48 of interactionsbetween communicants and social network profiles 50 that are associatedwith respective communicants. Each interaction record describes thecontext of an interaction between a pair of communicants. For example,in some examples, an interaction record contains one or more of anidentifier for each of the communicants, an identifier for the place ofinteraction (e.g., a virtual area instance), a description of thehierarchy of the interaction place (e.g., a description of how theinteraction room relates to a larger area), start and end times of theinteraction, and a list of all files and other data streams that areshared or recorded during the interaction. In some examples, eachinteraction is tracked independently such that, for a given pair ofcommunicants, there is a list of relationship event records, each ofwhich records a single respective interaction (e.g., sent a chatmessage, streamed audio for 93 seconds, shared file X, etc.). Thus, foreach realtime interaction, the network infrastructure serviceenvironment 42 tracks when it occurred, where it occurred, and whathappened during the interaction in terms of communicants involved (e.g.,entering and exiting), objects that are activated/deactivated, and thefiles that were shared. Each social network profile 50 typicallyincludes: identity characteristics (e.g., name, age, gender, andgeographic location information such as postal mailing address) thatdescribe a respective communicant or a persona that is assumed by thecommunicant; explicit relationship information that is declared by thecommunicant; and relationship information that is inferred from thecommunicant's interactions in the network communication environment 10.

The communications applications 28, 32, the area applications 46, andthe network infrastructure service environment 42 together provide aplatform (referred to herein as “the platform”) that administers therealtime connections with network nodes in a communication context thatis defined by an instance of a virtual area subject to a set ofconstraints 43 that control access to the virtual area instance.

The communications applications 28, 32 present respective views of thevirtual areas 44 in accordance with data received from the networkinfrastructure service environment 42 and provide respective interfacesfor receiving commands from the communicants and providing a spatialinterface that enhances the realtime communications between thecommunicants. The communicants typically are represented in the virtualareas 44 by respective avatars (e.g., sprites), which typically moveabout the virtual areas 44 in response to commands that are input by thecommunicants at their respective network nodes. In some examples, thecommunications applications 28, 32 establish realtime data streamconnections between the first and second client network nodes 12, 14 andother network nodes sharing the virtual area 44 based on the positionsof the communicants' avatars in the virtual areas 44 as described inU.S. Pat. Nos. 7,769,806 and 7,844,724.

Among the software components executing on the client network nodes 12,14 are a user interface component and a browser component. The browsercomponent provides a set of web browsing functions, including browserfunctions, document viewing functions, and data downloading functions.The user interface component generates a graphical user interface thatinterfaces the user to the realtime communications and network browsingfunctionalities of the browser component. The browser component may beintegrated into the communications applications 28, 32 or it may beimplemented by a separate browser component (e.g., a plug-in) thatexposes an API through which the communications applications 28, 32 maycall methods that are available from the browser component, includingbrowsing methods, document viewing methods, and data downloadingmethods.

The network connections between network nodes may be arranged in avariety of different stream handling topologies, including apeer-to-peer architecture, a server-mediated architecture, and hybridarchitectures that combine aspects of peer-to-peer and server-mediatedarchitectures.

In some embodiments, the server network node 40 remotely manages clientcommunication sessions and remotely configures audio and graphicrendering engines on the client network nodes 12, 14, as well asswitching of data streams by sending instructions (also referred to asdefinitions) from the remotely hosted area applications 46 to the clientnetwork nodes in accordance with the stream transport protocol describedin U.S. patent application Ser. No. 12/825,512, filed Jun. 29, 2010, theentirety of which is incorporated herein by reference. In some of theseembodiments, the server node(s) 40 send to each of the client nodes 12,14 provisioning messages that configure the client nodes 12, 14 tointerconnect respective data streams between active ones of theircomplementary sources and sinks in accordance with switching rulesspecified in the server applications 46.

The platform tracks communicants' realtime availabilities and activitiesacross the different communication contexts that are defined by the areaapplications 46. This information is presented to the communicants inthe form of realtime visualizations that enable the communicants to makemore informed network interaction decisions (e.g., when to interact witha contact) and encourages the communicants to initiate interactions withother communicants and to join contexts (e.g., an ongoing conversationbetween communicants) of which the communicants otherwise would not havebeen aware. In some embodiments, the realtime visualization includesvisual cues as to the presence and activities of the communicants in thecontexts of the server applications. The presentation of these visualcues typically depends on one or more of governance rules associatedwith the virtual areas 44, administrative policies, and user preferences(including preferences regarding the exportation of the user's presenceand the connection of the user to areas and other communicants), whichmay define tiered relationship based predicates that control access topresence information and/or resources on a zone-by-zone basis.

FIG. 2 shows an exemplary graphical user interface 70 that is generatedby an example of the communications application 28 in a window 59 on adisplay of the client network node from which a user of the clientapplication (“Art” in this example) is operating. The graphical userinterface 70 includes a people panel 65, a viewer panel 66, a peopleinteraction toolbar 67, an audio interaction toolbar 68, and a set ofpanel view controls 69.

The people interaction toolbar 67 includes a Chat button 98 and anInvite button 102. Selection of the Chat button 98 opens a chat panel140 (see FIG. 4) that enables Art to initiate a chat with othercommunicants who are present in the area application where Art ispresent (i.e., Zone 1 in the illustrated example). Selection of theInvite button 102 opens an Invite window that enables Art to invite oneor more communicants to a selected virtual area location (e.g., an areaapplication or zone within that area application). Additional detailsregarding embodiments of the methods and functions invoked by the Chatbutton 98 and the Invite button 102 are described in U.S. patentapplication Ser. No. 12/354,709, filed Jan. 15, 2009, and U.S.Provisional patent application No. 61/373,914, filed Aug. 16, 2010.

The audio interaction toolbar 68 includes a headphone control 84 thatenables Art to toggle on and off the local speakers of the clientnetwork node, and a microphone control 86 that enables Art to toggle onand off the local microphone of the client network node.

The panel view controls 69 include a people panel button 71 for openingand closing the people panel 65, a chat panel button 73 for opening andclosing a chat panel (see FIG. 6), and a viewer panel button 75 foropening and closing the viewer panel 66.

The people panel 65 depicts the realtime availabilities and activitiesof some or all of Art's contacts across different communicationcontexts. In the example shown in FIG. 2, the people panel 65 showsArt's communicants segmented into two virtual area groups 72, 74 and acontacts group 76. The virtual area groups 72, 74 correspond to each ofthe area applications 44 of which Art is a member with respect to whichat least one of Art and Art's contacts is present. The contacts group 76contains all or a selected portion of Art's contacts that are notrepresented in any of the virtual area groups. The first virtual areagroup 72 of communicants is contained within a section 78 (labeled witha header bar entitled “Zone 1”) that identifies all the communicants whohave a presence in the area application “Application 1”. The secondvirtual area group 74 of communicants is contained within a section 80(labeled with a header bar entitled “Zone 2”) that identifies all thecommunicants who have a presence in the area application “Application2”. The contacts group 76 of communicants is contained within a section82 (labeled with a header bar entitled “Contacts”) that identifies allof Art's contacts who are not shown in any of the first and secondvirtual area groups 72, 74 (i.e., they either are not members of or notpresent in any of Zone 1 and Zone 2).

In the example shown in FIG. 2, the virtual area sections 78, 80 containthe graphical representations (avatars) of the communicants (includingat least one of Art or Art's contacts) who currently have presence inthe respective area applications 44, and the contacts section 82contains graphical representations (avatars) of all of the remainingones of Art's contacts that are not present in or not members of any ofZone 1 and Zone 2. In the illustrated example: Art and Beth are membersof server Zone 1; Art, Carl, Dan, and Ed are members of Zone 2; and Franand Garth are not members of Zone 1 nor Zone 2. In this example, Franand Garth are contacts of Art who are not presented in Zone 1 or Zone 2.

Each communicant is represented graphically by a respective circularsprite that is labeled with a respective user name of the communicant(i.e., “Art,” “Beth,” “Carl,” “Dan,” “Ed,” “Fran,” and “Garth”). Eachsprite also may be associated with a respective status line thatincludes additional information about the communicant. In someembodiments, each status line can include one or more of the followinginformation: location of presence (e.g., a server application or a zoneof that sever application); availability (e.g., busy, idle); a statusmessage (e.g., “Out of the office next Wednesday”); and the name of theclient node from which the communicant is operating (e.g., “workstation1” or “mobile phone”). In some embodiments, the ordering of the spatialpositions (e.g., from top to bottom) of the communicant avatars in eachof the sections 78, 80, 82 is alphabetical by user name. In otherembodiments, the spatial positions of the communicant avatars in each ofthe server application sections 78, 80 are ordered in accordance withthe temporal ordering of the communicants in terms of the times when thecommunicants established their respective presences with the serverapplications. The spatial positions of the communicant avatars in thecontacts section 82 may be sorted alphabetically by user name, accordingto frequency of contact, according to recentness of contact, oraccording to other sorting or filtering criteria.

The activities of the communicants in the contexts of the areaapplications 44 may be inferred from the activities on the communicationchannels over which the respective communicants are configured tocommunicate. The activities on the communication channels are shown inthe graphical user interface 70 by visual cues that are depicted inassociation with the graphical representations of the communicants inthe sections 78, 80, 82. For example, the “on” or “off” state of acommunicant's local speaker channel is depicted by the presence orabsence of a headphones graphic 90 on the communicant's sprite. When thespeakers of the communicant who is represented by the sprite are on, theheadphones graphic 90 is present (see sprites Art, Carl, and Dan) and,when the communicant's speakers are off, the headphones graphic 90 isabsent (see sprites Beth and Ed). The “on” or “off” state of thecommunicant's microphone is depicted by the presence or absence of amicrophone graphic 92 on the communicant's sprite. When thecommunicant's microphone is on, the microphone graphic 92 is present(see sprite Dan); and, when the communicant's microphone is off, themicrophone graphic 92 is absent (see sprites Art, Beth, Carl, and Ed).The headphones graphic 90 and the microphone graphic 92 provide visualcues of the activity states of the communicant's sound playback andmicrophone devices. In addition, the current activity on a communicant'smicrophone channel is indicated by a dynamic visualization that lightensand darkens the communicant's avatar in realtime to reflect the presenceor absence of audio data on the microphone channel. Thus, whether or nottheir local speakers are turned on, communicants can determine whenanother communicant is speaking by the “blinking” of the coloration ofthat communicant's avatar. The activity on a communicant's text chatchannel is depicted by the presence or absence of the hand graphic 94adjacent the communicant's sprite (see sprite Beth). Thus, when acommunicant is transmitting text chat data to another network node thehand graphic 94 is present, and when a communicant is not transmittingtext chat data the hand graphic 94 is not present. In some embodiments,text chat data is transmitted only when keyboard keys are depressed, inwhich case the visualization of the communicant's text channel appearsas a flashing on and off of the hand graphic 94.

In the example shown in FIG. 2, members of an area application are ableto receive the visual cues of the communicant activities occurring inthe context of that area application whether or not the member ispresent. Thus, the graphical user interface 70 that is presented to Artshows visual cues indicating the activity on the communication channelsof the communicants present in Zone 1 (where Art is present) and thecommunication channel activities of the communicants present in Zone 2(where Art is not present).

Additional details regarding embodiments of the people panel 65 aredescribed in U.S. Provisional patent application Ser. No. 61/373,914,filed Aug. 16, 2010, and U.S. patent application No. 12/354,709, filedJan. 15, 2009.

The viewer panel 66 includes a navigation area 110 and a display area112.

FIG. 2 shows an example of the graphical user interface 70 when thepeople panel 65 is open and the viewer panel 66 is open in the browsermode.

The navigation area 110 includes forward and back buttons 114, alocation bar 116, a Go button 118, and a reload button 120. The forwardand back buttons 114 enable a user to traverse a navigation stack ofuniform resource identifier (URI) addresses (e.g., a linked list ofpreviously visited URLs). The location bar 116 allows a user to specifya URI address of a network resource, and the Go button 118 invokes oneor more browser functions on the client network node to navigate to thespecified URI address and render the network resource at the specifiedURI address in the display area 112. The reload button 120 invokes oneor more browser functions on the client network node to reload thegraphic representation of the network resource currently displayed inthe display area 112.

The display area 112 contains the rendered depictions of networkresources located at the URI address specified in the navigation area110. In the example shown in FIG. 14, the viewer panel 66 is in thebrowser view mode and shows a rendered view of the network resource (aweb page in this example) that is located at the URLhttps://www.sococo.com/home.php, as indicated in the location bar 116.In the illustrated example, the display area 110 shows a web page thatincludes a header section 122, a top navigation bar 124, a sidenavigation bar 126, a contents section 128, a notices section 130, and anavigation links section 132.

In addition to the control and panel elements of the graphical userinterface 70 (e.g., the people panel 65, the viewer panel 66, the peopleinteraction toolbar 67, the audio interaction toolbar 68, and the panelview controls 71, 73, 75), the graphical user interface 70 includes aShare button 375 and a set 373 of Viewer Panel control buttons,including a Map button 376, a Browse button 378, and four View Screenbuttons 380-386. The Share button 375 initiates a screen share of thecontents of the display area 112 of the viewer panel 66 in connectionwith a view screen object in a virtual area. These contents include, forexample, renderings of any information that is received by the browsercomponent in connection with the network resource identified in thelocation bar 116, and a document or application that is being shared bythe user in connection with a view screen object in a virtual area. TheMap button 376 sets the view presented in the viewer panel 66 to a mapview of the virtual area. The Browse button 378 sets the view presentedin the viewer panel 66 to a browser view. Each of the four View Screenbuttons 380-386 sets the viewer panel 66 to display the content beingshared in connection with a corresponding one of the view screen objectsin the virtual area.

FIG. 3 shows an example of the graphical user interface 70 in the Mapview mode presenting in the viewer panel 66 a rendered view of a zone(Zone 1) of the virtual area SococoHQ that is located at the locationSococoHQ/Area1, as indicated in the location bar 110.

Each of the communicants who is present in the virtual area isrepresented graphically by a respective avatar that corresponds to thecommunicant's avatar that is shown in the people panel 65. The virtualarea is represented graphically by a two-dimensional top view of arectangular space. In some examples, the communicants' spritesautomatically are positioned in predetermined locations (or “seats”) inthe virtual area when the communicants initially enter the virtual area.

The virtual area includes four view screen objects 388, 390, 392, 394and a table object 396. Communicants interact with the objects byselecting them with an input device (e.g., by single-clicking on theobjects with a computer mouse, touch pad, touch screen, or the like).The view screen objects 388-394 are associated with application sharingfunctionality of the platform that enables communicants to shareapplications operating on their respective client network nodes. Theapplication sharing functionality is invoked by activating a view screenobject (e.g., by single-clicking the view screen object with an inputdevice). In some embodiments, the platform provides visual cues thatindicate whether or not a communicant is sharing an application over anapplication sharing channel. In response to a communicant's selection ofthe view screen object, the communicant's sprite automatically is movedto a position in the graphical representation of the virtual area thatis adjacent the view screen object. The position of a communicant'ssprite adjacent the view screen object indicates that the communicantcurrently is sharing or is about to share an application with the othercommunicants in the virtual area. In addition, the avatar of eachcommunicant who is viewing a shared application (including the sharingcommunicant) is depicted with a pair of “eyes” to indicate that therepresented communicants are viewing the content being shared inconnection with the view screen objects (see, e.g., the avatars of Alexand Dan in FIG. 5). The graphical depiction of view screen object ischanged depending on whether or not an active application sharingsession is occurring. For example, the depicted color of the view screenmay change from a brighter color during an active application sharingsession to a darker color when there is no application sharing takingplace. Examples of the application sharing process are described inconnection with FIGS. 26-28 of U.S. patent application Ser. No.12/354,709, filed Jan. 15, 2009, and in U.S. patent application Ser. No.12/418,270, filed Apr. 3, 2009.

The table object 396 is associated with file sharing functionality ofthe platform that enables communicants to upload computer data files toserver storage in association with the virtual area and to download datafiles that are associated with the virtual area from the server storageto the respective client network nodes. In example shown in FIG. 3,there are two document objects 398, 400 that are associated with thetable object 396. The document objects 398, 400 are linked to respectivedocuments that are have been shared in the virtual area and stored inserver storage. Any of the document objects 398, 400 may be selected bya communicant (e.g., by double-clicking the document object 190 with aninput device, such as a computer mouse) to initiate downloading of theassociated document to the communicant's client network node. Additionaldetails regarding the structure, function, and operation of the tableobject 396 may be obtained from U.S. patent application Ser. No.12/354,709, filed Jan. 15, 2009.

In the Map view mode, the navigational controls of the graphical userinterface 70 allow the user to traverse a path through the virtualenvironment in accordance with a navigational model that is tied to theunderlying spatial hierarchy of virtual area locations and objectswithin the locations. The network infrastructure service environmentrecords the path traversed by the user. In some embodiments, the networkinfrastructure service environment records a history that includes atemporally ordered list of views of the virtual area locations that arepresented to the user as the user navigates through the virtual area.Each view typically corresponds to a view of a respective renderablezone of the virtual area. In these embodiments, the navigation controlsenable the user to move to selected ones of the zones in the history.The navigation controls also include a graphical representation of adepth path that shows the location in the spatial hierarchy thatcorresponds to the user's current view of the virtual area. In someembodiments, the graphical representation of the depth path includes arespective user-selectable link to a respective view of each of thepreceding levels in the spatial hierarchical model of the virtual areaabove the current view. The back button 369 corresponds to a backwardcontrol that enables the user to incrementally move backward topreceding ones of the zones in the history of the zones that weretraversed by the user. The forward button 371 corresponds to a forwardcontrol that enables the user to incrementally move forward tosuccessive ones of the zones in the history of the zones that weretraversed by the user. Some examples additionally include a placemarksbutton that activates a placemarking control for storing links to zonesand a placemark navigation control for viewing a list of links topreviously placemarked zones. In response to user selection of theplacemarking control, a placemark is created by storing an image of thelocation shown in the current view in association with a hyperlink tothe corresponding location in the virtual area. In response to a userselection of the placemark navigation control, a placemarks window ispresented to the user. The placemarks window includes livevisualizations (showing, e.g., where communicants are located and visualcues of their realtime activities) of all locations that have beenplacemarked by the user. Each of the images in the placemarks window isassociated with a respective user-selectable hyperlink. In response touser selection of one of the hyperlinks in the placemarks window, a viewof the virtual area corresponding to the location associated with theselected hyperlink is automatically displayed in the browsing area ofthe graphical user interface 70. Some examples include home buttoncorresponds to a control that returns the user to a view of a designated“home” location in the virtual environment. Additional details regardingthe structure, function, and operation of examples of the navigationcontrols are described in U.S. patent application Ser. No. 12/354,709,filed Jan. 15, 2009.

FIG. 4 shows an example of the graphical user interface 70 when thepeople panel 65, a chat panel 140, and the viewer panel 66 are open.

Activating the chat panel button 73 or the chat button 98 opens the chatpanel 140. When the chat panel button 73 is activated, the Chanel panel140 opens to show a chat interface for a persistent virtual chat areafor interactions occurring in connection with a respective virtual area.In the example shown in FIG. 4, Art activated the chat panel button 73at the time he was present in Zone 1; therefore, the chat panel 140shown in FIG. 4 contains the persistent virtual chat area for text chatinteractions occurring in Zone 1. When the chat button 98 is activated,on the other hand, the chat panel 140 opens to show a chat interface fora persistent personal virtual area for interactions between Art and aselected one of the communicants. Examples of personal virtual areas aredescribed in U.S. patent application Ser. No. 12/509,658, filed Jul. 27,2009.

The chat interface of the chat panel 140 includes a chat log area 142, atext box 144, and a Send button 146. The chat panel 402 also includes aminimap view of the current zone (Zone 1) in which the user is present.In this example, the user may enter text messages in the text box 144and activate the Send button 146 to transmit the text messages to theother communicants who are present in the zone.

The user may enter text messages in the text box 144 and transmit thetext messages to the other communicants who are in the same zone byselecting the Send button 146. The chat log area 142 displays a log ofcurrent and optionally prior events that are associated with the currentzone. An exemplary set of events that may be displayed in the chat logarea 142 include: text messages that the user has exchanged with othercommunicants in the current zone; changes in the presence status ofcommunicants in the current zone; changes in the speaker and microphonesettings of the communicants in the current zone; and the status of theobjects in the zone (discussed below), including references to anyapplications and data files that are shared in connection with theobjects. In the illustrated embodiments, the events are labeled by thecommunicant's name followed by content associated with the event (e.g.,a text message) or a description of the event.

The chat panel 140 provides a context for organizing the presentation ofthe events that are displayed in the chat log area 142. For example, inthe illustrated embodiment, each of the displayed events is labeled witha respective tag that visually correlates with the appearance of thesprite of the communicant that sourced the displayed event. Inparticular, each of the events that is sourced by a particular one ofthe communicants is labeled with a respective icon 148, 150, 152, 154having a visual appearance (e.g., color-code, or design pattern) thatmatches the visual appearance of that communicant's sprite. In thisexample, the color of the icons 148, 152 matches the color of the bodyof Art's sprite, and the color of the icon 150, 154 matches the color ofthe body of Beth's sprite.

In the examples described below, the platform enables a communicant toassociate objects in zones of a virtual area with network resources, andmaintains those associations across sessions to provide zones withpersistent network resource associations that can be accessedimmediately upon entry into the zones. In these examples, an object(e.g., a view screen object) in a zone of a virtual area has aconfigurable uniform resource identifier (URI) property that acommunicant can configure to associate a network resource with theobject and thereby create “spatial bookmarks” for the network resourcesat the respective object locations in the zones of the virtual area. Inthis way, a communicant can customize a zone of a persistent virtualarea with any type of network accessible resources to suit anyparticular purpose and then share the network resources with othercommunicants in the zone. For example, communicants can associate viewscreen objects in a zone of a virtual area with respective cloud-basedservices that relate to a particular project or business function (e.g.,finance, accounting, software development, project management). Theplatform stores persistent records of the state of each zone of thevirtual area, including the service associations with objects and thecommunicant interactions (e.g., chat, recordings, shared documents) thatoccurred in the zone so that each time the communicants enter the zonethey can continue where the left off with single-click access to theservices that are relevant to the particular project or businessfunction associated with the zone. Being able to place and keep servicesrunning in a zone of a virtual area means that meetings start with liveapplication information (e.g., network resource information, storeddocuments, prior chat conversations, and recorded audio conversations)already in the zone, and can restart where communicants left adiscussion at the end of the previous meeting.

FIG. 5 shows an example 410 of the graphical user interface 70 (FIG. 2)that includes a viewer panel 412 that shows an example of a zone 414(labeled “Sales and Support”) of the virtual area Team Space thatincludes three view screen objects 416, 418, 420 that are associatedwith respective network resources. In this example, each networkresource is a network accessible service (i.e., SugarCRM, Netsuite, andUnfuddle) that is associated with a respective URI (i.e.,http://www.sugarcrm.com, http://www.netsuite.com, andhttp://www.unfuddle.com). The services associated with the view screenobjects 416, 418, 420 are being accessed by the browser component on theclient network nodes of the communicants who currently are screensharing in connection with the view screen objects 416, 418, 420 in thezone 414. In this regard, the contents of network resources shared bythe communicant currently in charge of running view screen objects(i.e., the moderators who might be, e.g., the communicants who initiallyactivated the view screen objects) automatically are captured from thesecommunicants' client network node and sent to the other communicants whohave activated the corresponding view screen objects. In the exampleshown in FIG. 5, Alex Go is the communicant who initially activated theSugarCRM and Unfuddle services and Don is the communicant who initiallyactivated the Netsuite service. The client network nodes being operatedby Alex Go and Don are screen sharing these services with the othercommunicants in the Sales and Support zone 414 (i.e., J. Moyers and SethMiller) using the screen sharing functionality of the clientapplications executing on their respective client network nodes. In thisway, all of the communicants in the zone 414 can collaborate together inthe context of the joint network resource interactions of Alex Go andDon in connection with the SugarCRM, Netsuite, and Unfuddle services. Inthese examples, all the communicants who activate the same view screenobject will see exactly the same network resource contents via screensharing.

FIG. 6 shows the graphical user interface 410 after Alex Go hasactivated the view screen object 420 with his pointer 422 (e.g., bysingle-clicking on the graphical representation of the view screenobject). In response to the positioning of the pointer 422 over the viewscreen object 420, the boundary of the view screen object 420 ishighlighted to indicate that its properties can be configured. Inresponse to activation of the view screen object 420, the platformgenerates a dialog box 424 that presents options for configuring theview screen object 420. In this example, Alex Go is able to select oneof the following operations: “view” the object, “remove” the object, or“edit” the properties of the object. The “view” operation shows thecurrent state of the view screen object 422. The “remove” operationremoves the current properties of the view screen object 420. The “edit”operation opens another dialog box that allows Alex Go to modify theproperties of the view screen object (e.g., change the URI associatedwith the view screen object 420).

FIG. 7 shows a confirmation dialog box 426 that is generated in responseto Alex Go's selection of the “remove” operation in connection with theview screen object 420 shown in FIG. 6. The confirmation dialog box 426presents the options to “remove” the properties associated with the viewscreen object or “cancel” the remove operation.

FIG. 8 shows the virtual area 414 after Alex Go has selected the“remove” button in the confirmation dialog box 426 shows in FIG. 7. Inthis example, the unprovisioned view screen object 420 is represented bya dashed boundary to indicate that the view screen object 420 is notassociated with a network resource and consequently is inactive.

FIG. 9 shows the graphical user interface 410 after Alex Go has movedhis pointer 422 over the unprovisioned view screen object 420. Inresponse to the positioning of the pointer 422 over the unprovisionedview screen object 420, the dashed boundary of the view screen object420 is highlighted and a “+” signed is displayed to indicate that theproperties of the view screen object 420 can be configured.

Referring to FIG. 10, in response to activation of the view screenobject 420, the platform generates a dialog box 428 that presentsoptions for configuring the properties of the view screen object 420. Inthis example, Alex Go is able to select one of the following operations:select one of a predefined set of network resources or an option todefine a non-predefined (custom) network resource to associate with the“Object”; input a “Label” for the “Object”; and input a URI (e.g.,http://agilezen.com) to associate with the “Object”. If a predefinednetwork resource is selected, the platform automatically populates theseproperty fields with pre- stored values that are associated with theselected network resource. If the non-predefined network resource optionis selected, the communicant is presented with a dialog box withproperty fields in which the communicant can enter the properties of anon-predefined network resource. In some examples, the communicant canenter the URI of a particular network resource, and the platformautomatically will retrieve a Label (e.g., the title) and aniconographic representation (e.g., a favicon) associated with the URI.Once the configurable view screen object properties have been set, theAlex Go can save the configuration by selecting the “Save” button or“Cancel” the operation.

FIG. 11 shows the graphical user interface 410 after Alex GO hasactivated a dropdown list 430 for selecting a service from thepredefined list of network resources or entering the properties of anon-predefined network resource.

FIG. 12 shows the graphical user interface 410 after Alex Go hasselected the Collabnet service from the dropdown list 430. In thisexample, the platform stored a respective “Label” (e.g., Collabnet), a“Home Page” URI (e.g., http://www.Collabnet.com), and iconographicrepresentation 432 for each of the predefined services. These propertyvalues automatically are populated into the corresponding fields of thedialog box 428 in response to the selection of a particular one of thenetwork services from the dropdown list 430. Once the configurable viewscreen object properties have been set, the Alex Go can save theconfiguration by selecting the “Save” button in the dialog box 428 orcancel the operation by selecting the “Cancel” button.

FIG. 13 shows the graphical user interface 420 after Alex Go hasselected the “Save” button in the dialog box 428 shown in FIG. 12. Inthis example, the view screen object 420 is overlaid with theiconographic representation associated with the selected service (i.e.,Collabnet), which serves as a visual spatial bookmark in the Sales andSupport zone 414 of the Team Space virtual area.

FIG. 14 shows the graphical user interface 410 after Alex Go hasactivated the view screen object 420 in the state shown in FIG. 13. Inthis example, the view screen object 420 is associated with the URI forthe Collabnet service. In response to the activation of the view screenobject 420, the client communications application shows the viewer panel412 in the browser mode of operation showing the rendered version of thenetwork resource identified by the associated URI (in this example, theURI corresponds to the Collabnet home web page).

FIG. 15 shows the graphical user interface 410 with the view screenobject 420 associated with the AgileZen web service.

FIG. 16 shows the graphical user interface 410 after Alex Go hasactivated the view screen object 420 in the state shown in FIG. 15. Inthis example, the view screen object 420 is associated with the URI forthe AgileZen service. In response to the activation of the view screenobject 420, the client communications application shows the viewer panel412 in the browser mode of operation showing the rendered version of thenetwork resource identified by the associated URI (in this example, theURI corresponds to the AgileZen home web page). Using the browserfunctionality of the client network node, Alex Go can navigate to aparticular active project within the AgileZen web site, as shown in FIG.17.

FIG. 18 shows the graphical user interface after Alex Go has selectedthe bookmark (or “pinning”) button 434, which is represented by a staricon. In response to the selection of the bookmark button 434, theclient communications application extracts information from the networkresource that can be used to change the properties of the current viewscreen object. In some examples, the client communications applicationextracts the URI, the title, and any iconographic representation (e.g.,a favicon) of the network resource. A web server of the virtualenvironment creator 18 sends a web page for an object property changedialog box to the browser component of the client network node. Beforethe browser component displays the dialog box, the client informationpopulates the object property fields of the dialog box with theinformation that was extracted from the network resource. The browsercomponent then displays the dialog box to enable Alex Go to confirm thechanges to the URI and possibly the Label associated with the viewscreen object 420 from the AgileZen home page to the URI and title ofAlex Go's active project within the AgileZen web site. The dialog box436 allows Alex Go to save the configuration by selecting the “Save”button in the dialog box 436 or cancel the operation by selecting the“Cancel” button.

Examples of the graphical user interface elements relating to thebookmarking (or pinning) functionality of the platform as show in FIG.19.

After the configuration has been saved, the bookmark button 434 ishighlighted (e.g., by filling the bookmark button 434 with a brightercolor) when the current page show in the viewer panel 412 is pointing tothe URI associated with view screen object 420 as shown in FIG. 20. Whenthe browser navigates away from the URI associated with the view screenobject, the bookmark button is shown unhighlighted (e.g., by filling thebookmark button 434 with a darker color) as shown, for example, in FIGS.17 and 18.

FIG. 21 shows the graphical user interface 410 with the viewer panel 412in the Map mode after the view screen object 420 has been associatedwith the URI for Alex Go's active project within the AgileZen web site.The view screen object 420 now can be activated with a single click ofthe input device associated with the pointer 422 to immediately accessthe active project page, as shown in FIG. 22. It is noted that thebrowser component on the client network node typically stores sessionand login credentials so that the communicant can immediately access adesired web page without having to go through a login page or otherauthentication mechanism.

FIG. 23 shows an example of a network resource sharing method performedby a client network node operating as a moderator. In accordance withthis method, the client network node displays a graphical user interfacethat includes a graphical representation of a virtual area that supportsestablishment of respective presences of communicants operatingrespective client network nodes, a graphical representation of each ofthe communicants who is present in the virtual area, and a graphicalrepresentation of an object associated with the virtual area and auniform resource identifier (URI) of a network resource (FIG. 23, block436). The client network node retrieves data from the URI based oncommunicant input received in connection with the graphicalrepresentation of the object (FIG. 23, block 438). In some examples, thecommunicant input is selection of the object. The client network nodedisplays a graphical representation of the retrieved data in thegraphical user interface (FIG. 23, block 440). The client network nodeshare an image of the displayed graphical representation of theretrieved data with one or more of the communicants who are present inthe virtual area and operating respective remote network nodes (FIG. 23,block 442). The client network node typically shares a stream of updatedimages of the graphical representation of the retrieved data thatreflect changes in the retrieved data over time.

In some examples, instead of or in addition to screen sharing therendered contents of a network resource being rendered in the viewerpanel of a moderator's graphical user interface, the moderator's clientnetwork node automatically shares the URI of that network resource.These examples have particular utility when used to share a networkresource (e.g., Google Docs™) that is configured to synchronize in realtime the views of all the communicants who are concurrently sharing thenetwork resource.

In addition to moderating the sharing of network resource contents withother communicants in the same virtual area, examples of the platformalso enable communicants in the virtual area to “take control” of thesharing to become the new moderator and to render a “private view” ofthe contents of the URI being shared by the moderator in which thecommunicant can control the rendering and navigation independently ofthe moderator.

As an example of the “take control” functionality, if Alex currently issharing a network resource identified by a URI associated with a viewscreen object, Don can click the view screen object to view the contentsof Alex's share, and then click a “take control” button in the graphicaluser interface to take control of the share. Don's client network nodenow renders the URI contents locally and sends out a scraped image tothe other communicants in the area who subscribed to the shared contentby selecting the view screen object. In this way, communicants canalternately take control of the sharing session. FIG. 14 shows anexample of a “take control” button 433 by a steering wheel icon to theright of the star button 434.

In some examples, the “take control” functionality is implementedwithout a separate “take control” button as follows. The moderator'sclient network node transmits the URI of a network resource being sharedto each of the viewer client network nodes. Each of the viewer clientnetwork nodes populates the location bar 116 in the viewer panel of theclient application graphical user interface with the transmitted URI. Inresponse to a particular viewer communicant's selection of the Go button118 in the navigation area 110 of the client application graphical userinterface, the particular viewer communicant's client applicationnotifies the platform that the Go button 118 was selected. The platformconfigures each of the network nodes involved in the sharing session sothat the moderator function now is performed by the network node of theparticular communicant who has taken control and the other clientnetwork nodes function as viewer network nodes. The client network nodeof the new moderator passes the URI to the local browser component,which renders the network resource identified by the URI in the viewerpanel of the graphical user interface. The client network node of thenew moderator also shares images of the output rendered by the browsercomponent with the other client network nodes involved in the screensharing session. The new moderator now can navigate to different networkresources (e.g., web pages) or take control of a document editingsession in Google Docs™.

In some examples, a viewer communicant may not be able to take controlof a sharing session unless certain conditions are satisfied. Forexample, the platform may require the viewer to have a particularcapability or it may require the current moderator to be in a particularstate (e.g., inactive for a particular period).

As an example of the “private view” functionality, if Alex currently issharing a network resource identified by a URI associated with a viewscreen object, Don can click a “private view” button in the graphicaluser interface to open a separate view of the network resourcesidentified URI in a local browser application (e.g., the Firefox browserapplication) that is separate from the browser functionality of thecommunications application 28. This is useful for communicants who wantto open up a second copy of the URI contents and change the view (e.g.,zoom in, zoom out, scroll to a different part of the rendered contents),navigate to a different URI, make edits, etc. while still being able towatch the shared view in the graphical user interface of thecommunications application 28. The Private View button is in FIG. 14shows an example of a “private view” button 435 by a layered rectangleicon to the right of the steering wheel button 433. In other examples,the “private view” button 435 is represented by an iconographicrepresentation of the separate browser application.

FIG. 24 shows an example of a network resource sharing method performedby a client network node operating as a viewer. In accordance with thismethod, the client network node displays a graphical user interface thatincludes a graphical representation of a virtual area that supportsestablishment of respective presences of communicants operatingrespective client network nodes, a graphical representation of each ofthe communicants who is present in the virtual area, and a graphicalrepresentation of an object associated with the virtual area and auniform resource identifier (URI) of a network resource (FIG. 25, block478). Based on communicant input received in connection with the object,the client network node subscribes to content being shared by a remotenetwork node in connection with the object (FIG. 25, block 480). In someexamples, the client network node subscribes to the shared content basedon communicant selection of an active viewscreen object. The clientnetwork node receives the content being shared from a remote networknode (FIG. 25, block 482). In some examples, the client network node mayreceive the shared content from the sharing network node either directlyover a peer-to-peer network connection or indirectly over a servermediated network connection. In the graphical user interface, the clientnetwork node displays a graphical representation of the received contentbeing shared (FIG. 25, block 484). Based on communicant input receivedin connection with the object, the client network node may enter a “takecontrol” mode of operation or a “private view” mode of operation (FIG.25, block 486). In some examples, the client network node enters thetake control mode operation based on user selection of the take controlbutton 433 in the graphical user interface or user selection of the Gobutton 118 associated with the target URI in the location bar 116 in thenavigation area 110 of the graphical user interface. In the take controlmode of operation, the client network node unsubscribes from the contentbeing shared, obtains data from the URI, displays a graphicalrepresentation of the obtained data in the graphical user interface, andshares an image of the displayed data with one or more communicants whoare present in the virtual area and operating respective remote networknodes (FIG. 25, block 488). In the private view mode of operation, theclient network node obtains data from the URI, and displays a graphicalrepresentation of the obtained data in a second graphical user interface(FIG. 25, block 490).

FIG. 25 shows an example 448 of the graphical user interface 70 (see,e.g., FIGS. 2-4) that includes a “dock” interface 450 that provides apreview of the contents associated with each of the view screen objectsin the user's current zone of presence. In the illustrated example, thecurrent zone of presence is Zone 1, which includes the four view screenobjects 388-394 (see FIG. 3). The dock interface 450 includes arespective preview panel 452, 454, 456, 458 for each of the view screenobjects in the zone.

If a particular view screen object is associated with content thatcurrently is being shared in the zone, the associated preview panelshows a video sequence of images of the shared content. For example,Beth is sharing a local application (e.g., a Microsoft® Word document)in connection with the view screen object 388, and the associatedpreview panel 452 shows a stream of thumbnail images 460 of the sharedlocal application content in the iconographic representation 464 of theview screen object 388 in the preview panel 452. In addition, thepreview panel 452 shows an iconographic representation 466 of thesharing communicant (i.e., Beth). Similarly, Art is sharing a networkresource (e.g., a network service application) in connection with theview screen object 390, and the associated preview panel 454 shows astream of thumbnail images 464 of the shared network resource content inthe iconographic representation 466 of the view screen object 390 in thepreview panel 454, along with an iconographic representation 467 of Art.

If a particular view screen object is associated with a network resourcethat is not currently being shared, the associated preview panel shows apreview of a local rendering of the network resource. For example, theview screen object 392 is associated with a network resourcecorresponding to a video file (e.g., a YouTube™ video), and theassociated preview panel 456 shows a browser image 468 of the pageassociated with the video file in the iconographic representation 470 ofthe view screen object 392 in the preview panel 456. In this process,the local client application 28 passes the URI for the video file to thelocal browser component, which renders a browser image 468 of the pageidentified by the URI in the associated preview panel 456.

The virtual environment creator 10 may communicate with the clientnetwork nodes 12, 14 in a variety of different ways in the process ofenabling communicants to associate network resources with objects in avirtual area to create the visual spatial bookmarks described herein.

FIG. 26 shows an example 500 of the virtual environment creator 18 thatmanages the process of associating network resources with objection in avirtual area and distributing those associates to all the communicantsin the virtual area. The virtual environment creator 500 includes a webserver 502, a state manager 504, an object properties database 506, amessage queue 508, and an area service 510.

The web server 502 communicates with the browser component on the clientnetwork node 12. The web server 502 sends to the web browser componentpreformatted web documents (e.g., a hypertext markup language (HTML)document) that the browser component displays as interface components(e.g., dialog boxes) in the viewer panel. The use of web pages to createinterface components on the client network node allows a systemadministrator to rapidly change the content and appearance of theinterface components on the fly without having to change thecommunications application running on the client network node (e.g., byhaving to rewrite the client application code and distribute newexecutable code to the communicants in the virtual area).

The browser component sends to the web server 502 request forms thatcontain communicant inputs (e.g., inputs specifying object propertychanges) in connection with dialog boxes and objects in the virtualarea. For example, when a communicant in the virtual area interacts withan object in the virtual area (e.g., the communicant positions a pointerover the graphic representation of the object), interface component onthe client network node 12 passes the input and an identifier for theobject (Object_ID) to the browser component, which sends to the webserver 502 a request form that includes the Object_ID and describes theuser input. In response, the web server sends to the browser component aweb page that is associated with the type of user interaction with theobject. In some examples, the web page specifies a specific display size(e.g., 600 pixels wide by 300 pixels high) for the dialog box. Theclient browser component displays the web page as a dialog box of thespecific size in the viewer panel.

The web server 502 passes object property changes to the state manager504. The state manager 504 writes the object property changes to theobject properties database 506, which contains records of all theobjects in the virtual area and the properties of those objects. Thestate manager 504 also writes the object property changes to messagesthat are stored in the message queue 508.

The message queue is a message broker that provides an asynchronouscommunications protocol between the web server 504 and the area server510. In some examples, the message queue is implemented by the HornetQmessage queue available from Red Hat, Inc., N.C., U.S.A. The area server510 registers its URI with the message queue 508 and the message queuepushes the object change messages to the area server 510

The area service 512 administers the area application 512 and cooperateswith the rendezvous service to create a virtual area for realtimecommunications between communicants. The area service 512 receivesobject property change messages from the message queue 508. The areaservice 510 updates the document object models (DOMs) for the changedobjects based on the object property change messages, and distributesthe updated DOMs to all the client network nodes that are connected tothe virtual area.

FIG. 27 shows a flow diagram of an example of a process by which objectproperty changes are processed and distributed to the communicants in anarea. In this example, the client network node 12 receives user input tochange one or more properties of a selected object (FIG. 27, block 520).For example, the client network node 12 may receive user input toprovision an unprovisioned object, modify one or more properties of acurrently provisioned object, or remove the properties of a currentlyprovisioned object. The client network node 12 sends the Object_ID ofthe selected object to the web server 502 (FIG. 27, block 522). The webserver 502 sends to the client network node 12 a web page that indicatesthe editable properties of the object (FIG. 27, block 524). In someexamples, the editable properties of the object include a Label, a URI,and an iconographic representation. The client network node 12 rendersthe web page as a dialog box in the graphical user interface presentedto the user (FIG. 27, block 526). The client network node 12 receivesuser input that sets the requested properties to associate with theselected object (FIG. 27, block 528). The client network node 12 sendsto the web server 502 a web form that contains the Object_ID and therequested property changes to associate with the Object_ID (FIG. 27,block 530). The web server 502 sends the requested property changes tothe state manager 504 (FIG. 27, block 532). The state manager 504 writesthe object property changes to the object properties database 506 andthe message queue 508 (FIG. 27, block 534). The message queue 508 pushesthe object property changes to the area server 510 (FIG. 27, block 536).The area server 510 updates the document object model (DOM) associatedwith the Object_ID and distributes the updated DOM to all the clientnetwork nodes connected to the virtual area (e.g., being operated by acommunicant who is present in the virtual area) (FIG. 27, block 538). Inresponse to receipt of the DOM update message from the area server 510,each client network node updates the rendering of the objectcorresponding to the Object_ID to reflect the changes made to the DOMfor that object (FIG. 27, block 540).

III. CONCLUSION

Other embodiments are within the scope of the claims.

1. A method, comprising: for an object associated with a virtual area that supports establishment of respective presences of communicants operating respective client network nodes, maintaining an object record associated with the object and comprising one or more property fields storing respective values defining properties of the object; based on a communicant-requested modification of one or more of the properties of the object, updating the values of corresponding ones of the property fields of the object record to reflect the communicant-requested modification; sending a specification of the one or more updated property field values to each of the client network nodes being operated by a respective one of the communicants who is present in the virtual area.
 2. The method of claim 1, wherein the object record comprises at least one property field for storing an uniform resource identifier (URI) of a network resource.
 3. The method of claim 2, wherein the URI identifies a network service.
 4. The method of claim 2, wherein the object record comprises at least one property field for storing an iconographic representation of the network resource.
 5. The method of claim 1, further comprising sending a web document to a respective one of the client network nodes, wherein the web document comprises an identifier of the object and a specification of a graphical user interface element configured for requesting modification of one or more properties of the object.
 6. The method of claim 5, wherein the graphical user interface element is a dialog box comprising one or more communicant-configurable fields corresponding to respective ones of the property fields of the object record.
 7. The method of claim 5, wherein the specification comprises a specification of a size at which the respective client network node is to display the graphical user interface element.
 8. The method of claim 1, further comprising writing to a message queue at least one message comprising the one or more updated property field values, and pushing the messages from the message queue to an area service that hosts the virtual area.
 9. The method of claim 1, wherein one or more of the property fields of the object record have null values, and the communicant-requested modification corresponds to a request to change one or more of the null values to non-null values.
 10. The method of claim 1, wherein the communicant-requested modification corresponds to a request to change one or more of the property field values of the object record.
 11. The method of claim 1, wherein the object is associated with screen sharing functionality of the client network node.
 12. Apparatus, comprising: a memory storing processor-readable instructions; and a processor coupled to the memory, operable to execute the instructions, and based at least in part on the execution of the instructions operable to perform operations comprising for an object associated with a virtual area that supports establishment of respective presences of communicants operating respective client network nodes, maintaining an object record associated with the object and comprising one or more property fields storing respective values defining properties of the object; based on a communicant-requested modification of one or more of the properties of the object, updating the values of corresponding ones of the property fields of the object record to reflect the communicant-requested modification; sending a specification of the one or more updated property field values to each of the client network nodes being operated by a respective one of the communicants who is present in the virtual area.
 13. At least one non-transitory computer-readable medium having processor-readable program code embodied therein, the processor-readable program code adapted to be executed by a processor to perform operations comprising: for an object associated with a virtual area that supports establishment of respective presences of communicants operating respective client network nodes, maintaining an object record associated with the object and comprising one or more property fields storing respective values defining properties of the object; based on a communicant-requested modification of one or more of the properties of the object, updating the values of corresponding ones of the property fields of the object record to reflect the communicant-requested modification; sending a specification of the one or more updated property field values to each of the client network nodes being operated by a respective one of the communicants who is present in the virtual area.
 14. A method, comprising: for an object associated with a virtual area that supports establishment of respective presences of communicants operating respective client network nodes, maintaining an object record associated with the object and comprising one or more property fields storing respective values defining properties of the object including at least one uniform resource identifier (URI) of a network resource, wherein the object is associated with screen sharing functionality of the client network node; and sending a specification of the property field values to each of the client network nodes being operated by a respective one of the communicants who is present in the virtual area.
 15. A method, comprising: displaying a graphical user interface comprising a graphical representation of a virtual area that supports establishment of respective presences of communicants operating respective client network nodes, a graphical representation of each of the communicants who is present in the virtual area, and a graphical representation of an object associated with the virtual area; receiving a communicant-requested modification of one or more properties of the object; transmitting the communicant-requested modification to a network infrastructure service environment supporting communicant interactions in the virtual area; receiving from the network infrastructure service environment one or more values defining respective properties of the object and reflecting the communicant-requested modification; and updating the graphical representation of the object based on the received values.
 16. The method of claim 15, wherein the object is associated with a uniform resource identifier (URI) of a network resource.
 17. The method of claim 16, wherein the URI identifies a network service.
 18. The method of claim 16, wherein the object is associated with an iconographic representation of the network resource, and the displaying comprises displaying the iconographic representation of the network resource in connection with the graphical representation of the object.
 19. The method of claim 16, further comprising retrieving data from the URI based on communicant input received in connection with the graphical representation of the object.
 20. The method of claim 19, further comprising displaying a graphical representation of the retrieved data in the graphical user interface.
 21. The method of claim 20, further comprising transmitting an image of the displayed graphical representation of the retrieved data to one or more of the communicants who is present in the virtual area.
 22. The method of claim 19, wherein the graphical user interface comprises network navigation controls, and further comprising navigating to another URI in response to communicant input received in connection with the network navigation controls.
 23. The method of claim 22, wherein the graphical user interface comprises a bookmarking control, and further comprising based on communicant input received in connection with the bookmarking control presenting a graphical user interface element comprising one or more fields corresponding to respective properties of the object.
 24. The method of claim 23, further comprising extracting one or more values from the other URI, and wherein the presenting comprises presenting the one or more extracted values in the one or more fields of the graphical user interface element.
 25. The method of claim 15, further comprising, based on communicant input received in connection with the graphical representation of the object, displaying a graphical user interface element comprising one or more communicant-configurable fields corresponding to one or more properties of the object.
 26. The method of claim 25, further comprising transmitting an indication of the received communicant input to the network infrastructure service environment, and in return receiving from the network infrastructure service environment a web document comprising an identifier of the object and a specification of the graphical user interface element.
 27. The method of claim 26, wherein the specification of the graphical user interface element comprises a specified size, and the displaying comprises displaying the graphical user interface element at the specified size.
 28. The method of claim 15, wherein the communicant-requested modification corresponds to a request to delete one or more values of one or more of the property fields of the object records.
 29. The method of claim 15, wherein the communicant-requested modification corresponds to a request to change one or more of the property field values of the object record.
 30. Apparatus, comprising: a memory storing processor-readable instructions; and a processor coupled to the memory, operable to execute the instructions, and based at least in part on the execution of the instructions operable to perform operations comprising displaying a graphical user interface comprising a graphical representation of a virtual area that supports establishment of respective presences of communicants operating respective client network nodes, a graphical representation of each of the communicants who is present in the virtual area, and a graphical representation of an object associated with the virtual area; receiving a communicant-requested modification of one or more properties of the object; transmitting the communicant-requested modification to a network infrastructure service environment supporting communicant interactions in the virtual area; receiving from the network infrastructure service environment one or more values defining respective properties of the object and reflecting the communicant-requested modification; and updating the graphical representation of the object based on the received values.
 31. At least one non-transitory computer-readable medium having processor-readable program code embodied therein, the processor-readable program code adapted to be executed by a processor to perform operations comprising: displaying a graphical user interface comprising a graphical representation of a virtual area that supports establishment of respective presences of communicants operating respective client network nodes, a graphical representation of each of the communicants who is present in the virtual area, and a graphical representation of an object associated with the virtual area; receiving a communicant-requested modification of one or more properties of the object; transmitting the communicant-requested modification to a network infrastructure service environment supporting communicant interactions in the virtual area; receiving from the network infrastructure service environment one or more values defining respective properties of the object and reflecting the communicant-requested modification; and updating the graphical representation of the object based on the received values. 